OmniThreadLibrary 3.06 has just been released. It is available via
SVN (https://github.com/gabr42/OmniThreadLibrary/tree/release-3.06)
or as a ZIP archive
(https://drive.google.com/open?id=0BwqVlLNTK4OxUmJyTklsRFllaEk).

What is OmniThreadLibrary?
==========================

OmniThreadLibrary is simple to use threading library for Delphi. It's
main "selling" points (besides the price, of course are power,
simplicity, and openess. With just few lines of code, you can set up
multiple threads, send messages between them, process Windows messages
and more. OmniThreadLibrary doesn't limit you in any way - if it is not
powerfull enough for you, you can ignore any part of its "smartness"
and replace it with your own code. If you don't like working with
threads - no problem! You can use high-level primitives like parallel
for, futures and pipelines to introduce parallelism into your
application.

OmniThreadLibrary is an open source project. It lives in the Google
Code and is licensed under the BSD license.

At the moment, OmniThreadLibrary supports Delphi 2007, 2009, 2010, XE,
XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, and 10.1 Berlin on the 
Win32 and Win64 platforms. 

Currently, there are no plans to support older Delphi compilers and .NET. 
XE2+ support is limited to Windows targets. Firemonkey is currently not 
supported.

Where can I get more information?
=================================

Home page: http://www.omnithreadlibrary.com/
Google+ Community: https://plus.google.com/communities/112307748950248514961
Downloads: https://drive.google.com/folderview?id=0BwqVlLNTK4OxVEgzZnZGM1FNMGc&usp=drive_web#list
Repository: https://github.com/gabr42/OmniThreadLibrary
Issue tracker: https://github.com/gabr42/OmniThreadLibrary/issues
Author's blog: http://thedelphigeek.com
Author's home page: http://primoz.gabrijelcic.org
Documentation wiki: http://otl.17slon.com/book/
Documentation book: http://leanpub.com/omnithreadlibrary
Webinars: http://www.omnithreadlibrary.com/webinars.htm

Changes since version 3.05
==========================

- Breaking changes:
  - Type TWaitFor.TWaitResult renamed to TWaitFor.TWaitForResult.
  - Packages were renamed. Now they are using $LIBSUFFIX scheme.
- New features:
  - Implemented Parallel.For<T>(const arr: TArray<T>).
  - New abstraction Parallel.TimedTask.  
  - Added types TOmniAlignedInt32 and TOmniAlignedInt32 which replaced
    TGp4AlignedInt and TGp8AlignedInt64.
  - Implemented Environment.ProcessorGroups and Environment.NUMANode to 
    provide information about processors in a massively parallel systems.    
    (Windows only, simulated on other platforms.)
  - Added NUMA support
    - Implemented IOmniTaskControl.ProcessorGroup and .NUMANode.
    - Implemented IOmniTask.SetProcessorGroup and .SetNUMANode.  
    - Implemented IOmniThreadPool.ProcessorGroups, .NUMANodes.
  - Implemented IOmniThreadPool.Affinity.
  - In the past, unhandled exceptions in the code handling the task execution
    were lost. Now, they are passed up to the IOmniThreadPool. If its property
    Asy_OnUnhandledWorkerException is set, exception will be passed to the event
    handler and application should react to it. The only safe way at that point
    is to log the error (and stack trace for the current thread) and terminate
    the application.
  - TOmniThreadPool.Create no longer waits on thread to be initialized. This
    allows a thread pool to be created inside DLL initialization code.
  - Implemented TOmniRecord<T>, a simple way to wrap "anything" in a record.
  - Added thread pool lifecycle notifications to OtlHooks 
    (RegisterPoolNotification, UnregisterPoolNotification).  
- Demos:
  - [HHasenack] Added more unit tests.
- Bug fixes:
  - Fixed unsafe 64-bit pointer-to-integer casts in TOmniCS.Initialize and 
    Atomic<T>.Initialize.
  - Fixed processing of 'new message'/'new wake event' events in TWaitFor.
  - [HHasenack] Fixed memory leak in handling 'owned objects' in TOmniValue.
  - IOmniAffinity.Mask changed from DWORD to NativeUInt to correctly support
    up to 64 processors on 64-bit systems.
  - Fixed memory leaks when iterating over interface types with Parallel.For.
    
--
Primoz
[http://thedelphigeek.com]